
package cn.rslee.demo.spring.jpa.repository;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import cn.rslee.demo.spring.jpa.entity.AccessLog;

/**
 * 描述：
 * 
 * <pre>HISTORY
 * ****************************************************************************
 *  ID   DATE                   PERSON          REASON
 *  1    2016年2月19日      rslee               Create
 * ****************************************************************************
 * </pre>
 * 
 * JPA可以按照方法的名称自动生成sql语句，具体的命名方法参考下面链接：
 * http://docs.spring.io/spring-data/jpa/docs/current/reference/html/
 * http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-jpa/
 * 摘要如下：
 * 
 * 框架在进行方法名解析时，会先把方法名多余的前缀截取掉，比如 find、findBy、read、readBy、get、getBy，然后对剩下部分进行解析。
 * 并且如果方法的最后一个参数是 Sort 或者 Pageable 类型，也会提取相关的信息，以便按规则进行排序或者分页查询。
 * 
 * And --- 等价于 SQL 中的 and 关键字，比如 findByUsernameAndPassword(String user, Striang pwd)；
 * Or --- 等价于 SQL 中的 or 关键字，比如 findByUsernameOrAddress(String user, String addr)；
 * Between --- 等价于 SQL 中的 between 关键字，比如 findBySalaryBetween(int max, int min)；
 * LessThan --- 等价于 SQL 中的 "<"，比如 findBySalaryLessThan(int max)；
 * GreaterThan --- 等价于 SQL 中的">"，比如 findBySalaryGreaterThan(int min)；
 * IsNull --- 等价于 SQL 中的 "is null"，比如 findByUsernameIsNull()；
 * IsNotNull --- 等价于 SQL 中的 "is not null"，比如 findByUsernameIsNotNull()；
 * NotNull --- 与 IsNotNull 等价；
 * Like --- 等价于 SQL 中的 "like"，比如 findByUsernameLike(String user)；
 * NotLike --- 等价于 SQL 中的 "not like"，比如 findByUsernameNotLike(String user)；
 * OrderBy --- 等价于 SQL 中的 "order by"，比如 findByUsernameOrderBySalaryAsc(String user)；
 * Not --- 等价于 SQL 中的 "！ ="，比如 findByUsernameNot(String user)；
 * In --- 等价于 SQL 中的 "in"，比如 findByUsernameIn(Collection<String> userList) ，方法的参数可以是 Collection 类型，也可以是数组或者不定长参数；
 * NotIn --- 等价于 SQL 中的 "not in"，比如 findByUsernameNotIn(Collection<String> userList) ，方法的参数可以是 Collection 类型，也可以是数组或者不定长参数；
 * 
 * @author rslee
 * @since 1.0
 */
public interface AccessLogRepository extends JpaRepository<AccessLog, Long> {
	
	// 按照用户名过滤数据,按照时间倒序排列,分页返回数据
	Page<AccessLog> findByUsernameOrderByVisitTmDesc(String username,Pageable pageable);
	
	

}
